package config

import (
	"fmt"
	"sync"
)
import "github.com/spf13/viper"

type Config struct {
	*viper.Viper
}

var config *Config
var once = sync.Once{}

func GetConfig() *Config {
	once.Do(func() {
		config = loadConfig()
	})

	return config
}

func loadConfig() *Config {
	// 全局的配置
	// 设置配置文件的名字
	viper.SetConfigName("config")
	// 设置配置文件的类型
	viper.SetConfigType("yaml")
	// 添加配置文件的路径，指定 config 目录下寻找
	viper.AddConfigPath("./")
	// 寻找配置文件并读取
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("fatal error config file: %w", err))
	}
	return &Config{
		viper.GetViper(),
	}
}
